//////////////////////////////////////////////////////////////////////////////////
//	Copyright 2011 by Yosef Grabivker, ryuho@homenetworksoft.com
//
//   Licensed under the Apache License, Version 2.0 (the "License");
//   you may not use this file except in compliance with the License.
//   You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
//   Unless required by applicable law or agreed to in writing, software
//   distributed under the License is distributed on an "AS IS" BASIS,
//   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
//   See the License for the specific language governing permissions and
//   limitations under the License.
//

#ifndef _ROUTER_CAPS_YG_H__
#define _ROUTER_CAPS_YG_H__

#include <string>

class CRouterCaps
{
public:
							~CRouterCaps(void);
	//Singletone
	static CRouterCaps&		GetIntstance();

	void					Reset();

	void					SetShellCaps(const char* str);
	void					SetAPCaps(const char* str);
	void					SetModemCaps(const char* str);

	bool					HasMACFilter()			{ return m_bHasMACFilter;	}
	bool					HasPing()				{ return m_bHasPing;		}
	bool					HasPortForward()		{ return m_bHasPortForward;	}
	bool					HasBandwidth()			{ return m_bHasBandwidth;	}
	bool					HasConnectionsList()	{ return m_bHasConnectionsList;	}
	bool					HasTCPNATSettings()		{ return m_bHasTCPNATSettings;	}
	bool					HasProcKill()			{ return m_bHasProcKill;	}
	bool					HasSyslogConfig()		{ return m_bHasSyslogConfig;}
	bool					HasKernelMod()			{ return m_bHasKernelMod;	}

	bool					HasNATUsageInfo()		{ return m_bHasNATUsageInfo;}
	bool					HasMEMUsageInfo()		{ return m_bHasMEMUsageInfo;}
	bool					HasCPUUsageInfo()		{ return m_bHasCPUUsageInfo;}
	bool					HasRTUsageInfo()		{ return m_bHasRTUsageInfo;	}


	bool					HasBuitInModem()		{ return m_bHasModem;		}
	bool					HasBuitInWireless()		{ return m_bHasWireless;	}


	std::string				GetShellName()			{ return m_strShellName;	}
	std::string				GetModemName()			{ return m_strModemName;	}
	std::string				GetApName()				{ return m_strAPName;		}

	bool					HasXMLScriptFormat()	{ return m_bXMLScriptFormat;}


protected:
	CRouterCaps(void);
	CRouterCaps(CRouterCaps&);
	CRouterCaps& operator=(CRouterCaps&);

private:
	static CRouterCaps		m_gCaps;

	bool					m_bHasMACFilter;
	bool					m_bHasPing;		
	bool					m_bHasPortForward;	
	bool					m_bHasBandwidth;	
	bool					m_bHasConnectionsList;	
	bool					m_bHasTCPNATSettings;	
	bool					m_bHasProcKill;	
	bool					m_bHasSyslogConfig;
	bool					m_bHasKernelMod;
	bool					m_bXMLScriptFormat;

	bool					m_bHasNATUsageInfo;
	bool					m_bHasMEMUsageInfo;
	bool					m_bHasCPUUsageInfo;
	bool					m_bHasRTUsageInfo;

	bool					m_bHasModem;
	bool					m_bHasWireless;

	std::string				m_strShellName;
	std::string				m_strModemName;
	std::string				m_strAPName;
};

#endif //_ROUTER_CAPS_YG_H__